// #include<iostream>
// using namespace std;
// //1.显示构造函数来创建对象
// //2.构造函数的隐私转换

// class Myclass
// {
// public:
//     Myclass(int x)
//     {}
// };

// int main()
// {
//     Myclass obj(10);//使用显示构造函数来创建对象
//     Myclass obj = 10;
//     return 0;
// }

// #include <iostream>

// class MyClass {
// public:
//     explicit MyClass(int x) {
//         std::cout << "Constructor called with " << x << std::endl;
//     }
    
//     MyClass(const MyClass& other) {
//         std::cout << "Copy constructor called" << std::endl;
//     }
// };

// int main() {
//     std::cout << "Creating obj1: ";
//     MyClass obj1(10);  // 直接构造
    
//     std::cout << "Creating obj2: ";
//     //MyClass obj2 = 20; // 隐式转换构造
    
//     return 0;
// }
//不会发生先创建临时对象 + 拷贝构造函数
//而是：编译器：发现 = 右边10是int类型
//看Myclass是否有接受int类型的构造函数
//直接调用构造函数


//explicit的作用：修饰构造函数，禁止构造函数的隐式转换


//MyClass obj2 = 20;
// MyClass obj2 = MyClass(20);隐式生成临时对象
//然后调用的是拷贝构造函数而不是 = 运算符重载
//因为这是创建对象的过程 调用构造函数完成对象的初始化

// = 可能是初始化也可能是赋值

